package main

import (
	"os"
	"path/filepath"
	"strings"
)

// GetAppPath 返回应用程序的基础路径
func GetAppPath() string {
	// 检查当前工作目录是否以 /app 开头
	wd, err := os.Getwd()
	if err == nil && strings.HasPrefix(wd, "/app") {
		return "/app"
	}

	// 如果不是容器环境，返回当前工作目录
	if wd, err := os.Getwd(); err == nil {
		return wd
	}

	return "."
}

// GetStaticPath 返回静态文件目录的完整路径
func GetStaticPath() string {
	return filepath.Join(GetAppPath(), "static")
}

// GetConfigPath 返回配置文件路径
func GetConfigPath() string {
	// 首先尝试当前目录下的 static/appList.json
	if _, err := os.Stat("static/appList.json"); err == nil {
		return "static/appList.json"
	}

	// 然后尝试 /app/static/appList.json
	if _, err := os.Stat("/app/static/appList.json"); err == nil {
		return "/app/static/appList.json"
	}

	// 最后尝试上级目录
	if _, err := os.Stat("../static/appList.json"); err == nil {
		return "../static/appList.json"
	}

	// 如果都找不到，返回默认路径
	return "/app/static/appList.json"
}

// GetDatasetConfigPath 返回数据集配置文件路径
func GetDatasetConfigPath() string {
	// 首先尝试当前目录下的 static/datasets.json
	if _, err := os.Stat("static/datasets.json"); err == nil {
		return "static/datasets.json"
	}

	// 然后尝试 /app/static/datasets.json
	if _, err := os.Stat("/app/static/datasets.json"); err == nil {
		return "/app/static/datasets.json"
	}

	// 最后尝试上级目录
	if _, err := os.Stat("../static/datasets.json"); err == nil {
		return "../static/datasets.json"
	}

	// 如果都找不到，返回默认路径
	return "/app/static/datasets.json"
}
